package com.ruoyi.common.base.chat.mapper;


import com.ruoyi.common.base.chat.domain.Chat;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 会话Mapper接口
 *
 * @author gdk
 * @date 2023-05-15
 */
public interface ChatMapper {
    /**
     * 查询会话
     *
     * @param id 会话主键
     * @return 会话
     */
    public Chat selectChatById(@Param("id") Long id,
                               @Param("createBy") Long createBy);

    /**
     * 查询会话列表
     *
     * @param chat 会话
     * @return 会话集合
     */
    public List<Chat> selectChatList(Chat chat);

    /**
     * 新增会话
     *
     * @param chat 会话
     * @return 结果
     */
    public int insertChat(Chat chat);

    /**
     * 修改会话
     *
     * @param chat 会话
     * @return 结果
     */
    public int updateChat(Chat chat);

    /**
     * 删除
     *
     * @param condition 条件
     * @return {@link int}
     * @author gdk
     * @since 2023/5/16 17:33
     */
    public int deleteChatById(@Param("id") Long id,
                              @Param("createBy") Long createBy);

    /**
     * 批量删除会话
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteChatByIds(Long[] ids);

    /**
     * app列表查询
     *
     * @param condition 条件
     * @return {@link List< Chat>}
     * @author gdk
     * @since 2023/5/16 17:17
     */
    List<Chat> appList(Chat condition);

    /**
     * 计数
     *
     * @param condition 条件
     * @return {@link int}
     * @author gdk
     * @since 2023/5/16 17:43
     */
    int count(Chat condition);

    /**
     * idList
     *
     * @param condition 条件
     * @return {@link List< Long>}
     * @author gdk
     * @since 2023/5/16 18:01
     */
    List<Long> idList(Chat condition);

    /**
     * 查询一个并锁定
     *
     * @param condition 条件
     * @return {@link Chat}
     * @author gdk
     * @since 2023/5/16 20:32
     */
    Chat getOneLock(Chat condition);

    /**
     * 逻辑删除
     *
     * @param condition 条件
     * @return {@link int}
     * @author gdk
     * @since 2023/5/20 16:58
     */
    int removeLogic(Chat condition);

    /**
     * 批量逻辑删除
     *
     * @param condition 条件
     * @param idList    idList
     * @return {@link int}
     * @author gdk
     * @since 2023/5/20 17:06
     */
    int removeLogicByIdList(@Param("condition") Chat condition,
                            @Param("idList") List<Long> idList);
}
